all files / timePicker/ clockPointer.vue

18.75% Statements 3/16
0% Branches 0/6
0% Functions 0/5
16.67% Lines 2/12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  1×                                                                                                            
 
import {isInner} from './timeUtils'
export default {
  props: {
    hasSelected: {
      type: Boolean,
      default: false
    },
    type: {
      type: String,
      default: 'minute',
      validator (val) {
        return ['hour', 'minute'].indexOf(val) !== -1
      }
    },
    value: {
      type: Number
    }
  },
  computed: {
    isInner () {
      return isInner(this)
    },
    pointerStyle () {
      const {type, value, calcAngle} = this
      const angle = type === 'hour' ? calcAngle(value, 12) : calcAngle(value, 60)
      return {
        transform: `rotateZ(${angle}deg)`
      }
    }
  },
  methods: {
    calcAngle (value, base) {
      value %= base
      const angle = 360 / base * value
      return angle
    }
  },
  render (h) {
    if (this.value === undefined || this.value === null) return h('span', {})
    return h('div', {
      class: {
        'mu-clock-pointer': true,
        'inner': this.isInner
      },
      style: this.pointerStyle
    }, [h('div', {
      class: {
        'mu-clock-pointer-mark': true,
        'has-selected': this.hasSelected
      }
    })])
  }
}